home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / MacMETH 3.2.1 / MacMETH Manual 1992 / Manual Examples / ToolboxDemo.MOD < prev    next >
Encoding:
Text File  |  1992-10-09  |  3.6 KB  |  114 lines  |  [TEXT/MEDT]

  1.     MODULE ToolboxDemo;  (* W. Heiz, 7-Apr-86 *)
  2.  
  3.           FROM SYSTEM IMPORT ADDRESS, BYTE, WORD, SETREG, REG, 
  4. INLINE;
  5.  
  6.           TYPE    Ptr    = ADDRESS;
  7.                 Handle    = POINTER TO ADDRESS;
  8.                 Str255    = ARRAY [0..255] OF CHAR;
  9.  
  10.             (* QuickDraw types *)
  11.  
  12.                 VHSelect    = (V, H);
  13.                 Point         =    RECORD
  14.                                   CASE :INTEGER OF
  15.                                           0: v, h     : INTEGER;
  16.                                       | 1: vh    : ARRAY [V..H] OF INTEGER;
  17.                                   END;
  18.                                 END;
  19.                 Rect          = RECORD
  20.                               CASE :INTEGER OF
  21.                                       0: top, left, bottom, right    : INTEGER;
  22.                                   | 1: topLeft, botRight    : Point;
  23.                               END;
  24.                     END;
  25.                 BitMap        =    RECORD
  26.                               baseAddr    : Ptr;
  27.                               rowBytes    : INTEGER;
  28.                               bounds    : Rect;
  29.                             END;
  30.                 Pattern       =    ARRAY [0..7] OF BYTE;
  31.                 StyleItem     =    (bold, italic, underline, outline, shadow, 
  32. condense, extend);
  33.                 Style         =    SET OF StyleItem;
  34.                 Bits16        =    ARRAY [0..15] OF CARDINAL;
  35.                 Cursor        =    RECORD
  36.                     data, mask    : Bits16;
  37.                     hotSpot    : Point
  38.                     END;
  39.                 GrafPtr       =    POINTER TO GrafPort;
  40.                 GrafPort      =    RECORD
  41.                               device        : INTEGER;
  42.                               portBits        : BitMap;
  43.                               portRect        : Rect;
  44.                               visRgn, clipRgn    : Handle;
  45.                               bkPat, fillPat    : Pattern;
  46.                               pnLoc, pnSize    : Point;
  47.                               pnMode        : INTEGER;
  48.                               pnPat        : Pattern;
  49.                               pnVis, txFont    : INTEGER;
  50.                               txFace        : Style;
  51.                               txMode, txSize    : INTEGER;
  52.                               spExtra, fgColor, bkColor    : LONGINT;
  53.                               colrBit, patStretch    : INTEGER;
  54.                               picSave, rgnSave, polySave    : Handle;
  55.                               grafProcs        : Ptr;
  56.                             END;
  57.  
  58.         (* QuickDraw routines *)
  59.  
  60.         PROCEDURE GetPort    (VAR port: GrafPtr);     CODE 0A874H;
  61.           PROCEDURE SetPort    (newPort: GrafPtr);     CODE 0A873H;
  62.           PROCEDURE SetOrigin    (h, v: INTEGER);     CODE 0A878H;
  63.           PROCEDURE Random    (): INTEGER;     CODE 0A861H;
  64.           PROCEDURE SetRect    (VAR r: Rect; left, top, right, bottom: INTEGER); 
  65.     CODE 0A8A7H;
  66.           PROCEDURE Pt2Rect    (pt1, pt2: Point; VAR rect: Rect);     CODE 
  67. 0A8ACH;
  68.           PROCEDURE OffsetRect    (VAR r: Rect; dh, dv: INTEGER);       CODE 
  69. 0A8A8H;
  70.           PROCEDURE InsetRect    (VAR r: Rect; dh, dv: INTEGER);        CODE 
  71. 0A8A9H;
  72.          PROCEDURE PaintRect    (VAR r: Rect);     CODE 0A8A2H;
  73.           PROCEDURE EraseRect    (VAR r: Rect);     CODE 0A8A3H;
  74.          PROCEDURE InvertRect    (VAR r: Rect);     CODE 0A8A4H;
  75.           PROCEDURE DrawChar    (ch: WORD);     CODE 0A883H;
  76.           PROCEDURE NewWindow    (wStorage: Ptr;
  77.                  VAR boundsRect: Rect;
  78.                  VAR title: Str255;
  79.                  visible: BOOLEAN;
  80.                  theProc: INTEGER;
  81.                  behind: Ptr;
  82.                  goAwayFlag: BOOLEAN;
  83.                  refCon: LONGINT): Ptr;     CODE 0A913H;
  84.     PROCEDURE DisposeWindow    (theWindow: Ptr);     CODE 0A914H;
  85.  
  86.     (* Other example procedures *)
  87.  
  88.  
  89.         PROCEDURE NewPtr(byteCount: LONGINT): ADDRESS;
  90.             CONST D0 = 0; A0 = 8;
  91.         BEGIN
  92.             SETREG(D0, byteCount); INLINE(0A11EH); RETURN REG(A0)
  93.          END NewPtr;
  94.  
  95.         PROCEDURE ModulaToPascalString(m: ARRAY OF CHAR; VAR p: Str255);
  96.             VAR i: INTEGER;
  97.         BEGIN
  98.             i := 0;
  99.             WHILE (i <= HIGH(m)) & (m[i] # 0C) DO p[i+1] := m[i]; INC(i) END;
  100.             p[0] := CHR(i);
  101.         END ModulaToPascalString;
  102.  
  103.         PROCEDURE CalledByToolbox;
  104.         BEGIN
  105.             INLINE(048E7H, 01F38H);  (* MOVEM.L A2-A4/D3-D7, -(SP)  save 
  106. regs *)
  107.             (* your statements *)
  108.             INLINE(04CDFH, 01CF8H);  (* MOVEM.L (SP)+, A2-A4/D3-D7  rest 
  109. regs *)
  110.         END CalledByToolbox;
  111.  
  112.     END ToolboxDemo.
  113.  
  114.